-- 血战麻将枚举

require "pubenum"  -- 在app/common/lib 

EMJTableState = {
	--所有游戏的公用状态，已经在pubenum 中定义了
	TABLE_STATE_UNKNOW = 0,
	TABLE_STATE_WAIT_ALL_READY = 1,	        --等待所有玩家准备
	TABLE_STATE_GAME_START = 2,             --游戏开始
    TABLE_STATE_ONE_GAME_START = 3,         --一局游戏开始
    TABLE_STATE_ONE_WAIT_GAME_START = 4,    --等待一局游戏开始
    TABLE_STATE_WAIT_ONE_GAME_REAL_END = 5, --等待一局游戏真正结束
	TABLE_STATE_WAIT_GAME_END = 6,          --等待游戏结束
	TABLE_STATE_ONE_GAME_END = 7,           --一局游戏结束
	TABLE_STATE_ONE_GAME_REAL_END = 8,      --一局游戏真正结束
	TABLE_STATE_CONTINUE = 9,               --继续处理逻辑(出牌，碰，杠，胡，过）
	TABLE_STATE_CONTINUE_AND_STANDUP = 10,  --继续处理站起
	TABLE_STATE_CONTINUE_AND_LEAVE = 11,    --继续处理离桌
	TABLE_STATE_GAME_END = 12,  	        --游戏结束
	TABLE_STATE_WAIT_CLIENT_ACTION = 13,    --等待客户端操作
	TABLE_STATE_WAIT_PLAYER_SITDOWN	= 14,   --等待玩家坐下
	TABLE_STATE_DISBAND_GAME = 15,          --解散游戏
    TABLE_STATE_WAIT_GAME_START = 16,       --等待游戏开始

	--定义各个子游戏的桌子状态
    TABLE_STATE_MJ_SHAKE_DICE = 17,       --摇骰子
	TABLE_STATE_WAIT_MJ_SHAKE_DICE = 18,  --等待摇骰子

	TABLE_STATE_MJ_DEAL_CARDS = 19,       --发牌
	TABLE_STATE_WAIT_MJ_DEAL_CARDS = 20,  --等待发牌

    --摸牌
	TABLE_STATE_MJ_MOPAI = 21,            --摸牌
	TABLE_STATE_WAIT_MJ_MOPAI = 22,       --等待麻将摸牌
	TABLE_STATE_MJ_DO_MOPAI = 23,		  --触发摸牌
	TABLE_STATE_WAIT_MJ_DO_MOPAI = 24,    --等待触发摸牌 

    --出牌
	TABLE_STATE_MJ_CHUPAI = 25,           --出牌
	TABLE_STATE_WAIT_MJ_CHUPAI = 26,      --等待麻将出牌

    --胡牌
	TABLE_STATE_MJ_HUPAI = 27,            --麻将胡牌
	TABLE_STATE_WAIT_MJ_HUPAI = 28,       --等待麻将胡牌

    --庄家第一次操作
    TABLE_STATE_DEAL_BANKER_FIRST_ACTION = 29, --庄家首先操作

    TABLE_STATE_WAIT_ONE_GAME_END = 30,     --等待一局游戏结束

	TABLE_STATE_MJ_CHA_DA_JIAO = 31,      	--查大叫
	TABLE_STATE_WAIT_MJ_CHA_DA_JIAO = 32, 	--等待查大叫

	TABLE_STATE_MJ_CHA_HUA_ZHU = 33,      	--查花猪
	TABLE_STATE_WAIT_MJ_CHA_HUA_ZHU = 34, 	--等待查花猪

	TABLE_STATE_MJ_HUAN_SAN_ZHANG = 35,   	 --换三张
	TABLE_STATE_WAIT_MJ_HUAN_SAN_ZHANG = 36, --等待换三张
	TABLE_STATE_CONTINUE_HUANSANZHANG = 37,  --换三张结果

	TABLE_STATE_MJ_DINGQUE = 38,          	--定缺
	TABLE_STATE_WAIT_MJ_DINGQUE = 39,     	--等待定缺
    TABLE_STATE_CONTINUE_DINGQUE = 40,    	--定缺结果

    TABLE_STATE_MJ_WAIT_DO_REAL_MOPAI = 41, --等待真正摸牌
    TABLE_STATE_MJ_DO_REAL_MOPAI = 42,      --真正摸牌

    TABLE_STATE_WAIT_CHARGE = 43,           --等待客户端充值
    TABLE_STATE_WAIT_DINGQUE_RESULT = 44,   --等待定缺结果
}

--基本操作类型
EMJActionType = {
	MJ_ACTION_TYPE_UNKNOW = 0,         --未定义

	MJ_ACTION_TYPE_CHUPAI = 1,         --出牌
    MJ_ACTION_TYPE_GANG_CHUPAI = 2,    --杠出牌
    MJ_ACTION_TYPE_MOPAI = 3,          --摸

	MJ_ACTION_TYPE_GUO = 4,            --过
	MJ_ACTION_TYPE_PENG = 5,           --碰
    --杠
    MJ_ACTION_TYPE_ZHIGANG = 6,        --直杠(明杠)
	MJ_ACTION_TYPE_BAGANG = 7,         --巴杠(添杠)
	MJ_ACTION_TYPE_ANGANG = 8,         --暗杠
    --胡
    MJ_ACTION_TYPE_HUPAI = 9,          --胡

    --轮到某玩家操作时，会将此状态广播给其他玩家
    MJ_ACTION_TYPE_WAIT_CHUPAI = 10,   --等待出牌

    MJ_ACTION_TYPE_SELECT = 20,        --客户端选择操作,有多种操作时

    MJ_ACTION_TYPE_GUOHU = 21,         --过胡
}

--基本操作状态 
EMJActionState = {
    NODO = 0,    --未操作
    DOING = 1,   --操作中(服务器处理中)
    DONE = 2,    --已完成
}

--玩家的杠碰类型,不要改这里!!!
EMJGangPengType = {
	GANGPENG_TYPE_PENG = EMJActionType.MJ_ACTION_TYPE_PENG,       --碰
	GANGPENG_TYPE_ZHIGANG = EMJActionType.MJ_ACTION_TYPE_ZHIGANG, --直杠(明杠)
	GANGPENG_TYPE_BAGANG = EMJActionType.MJ_ACTION_TYPE_BAGANG,   --巴杠（添杠）
	GANGPENG_TYPE_ANGANG = EMJActionType.MJ_ACTION_TYPE_ANGANG,   --暗杠
}

--筒条万枚举类型
EMJCardColorType = {        
	CARD_COLOR_TONG  = 0,         --筒
    CARD_COLOR_TIAO  = 1,         --条
    CARD_COLOR_WAN   = 2,         --万
}

--胡牌类型
EMJHuPaiType = {
	HUPAI_TYPE_PINGHU = 1,  			--平胡
	HUPAI_TYPE_DUIDUIHU = 2,  			--对对胡
    HUPAI_TYPE_QIDUI = 3,  				--7对
	HUPAI_TYPE_QINGYISE = 4,  			--清一色
	HUPAI_TYPE_DAIYAOJIU = 5,    		--带幺九
	HUPAI_TYPE_JINGOUDIAO = 6,			--金钩钓
	HUPAI_TYPE_QINGDUI = 7, 			--清对
	HUPAI_TYPE_LONGQIDUI = 8, 			--龙七对
	HUPAI_TYPE_QINGQIDUI = 9,   		--清7对
	HUPAI_TYPE_QINGYAOJIU = 10, 		--清幺九
	HUPAI_TYPE_JIANG_JINGOUDIAO = 11,	--将金钩钓
	HUPAI_TYPE_QING_JINGOUDIAO = 12,	--清金钩钓
	HUPAI_TYPE_TIANHU = 13,       		--天胡
	HUPAI_TYPE_DIHU = 14,         		--地胡
	HUPAI_TYPE_QING_LONGQIDUI = 15,		--清龙七对
	HUPAI_TYPE_SHIBALUOHAN = 16,		--十八罗汉
	HUPAI_TYPE_QING_SHIBALUOHAN =17,	--清十八罗汉
    HUPAI_TYPE_DUAN_YAOJIU = 18,        --断幺九
    HUPAI_TYPE_JIANGDUI = 19,           --将对
    HUPAI_TYPE_MENQING = 20,            --门清
    HUPAI_TYPE_ZHONGZHANG = 21,         --中张
	
    HUPAI_TYPE_HUAZHU = 22,  			--花猪
	HUPAI_TYPE_DAJIAO = 23,			    --大叫

	HUPAI_TYPE_GANG_SHANG_HUA = 24, 	--杠上花
	HUPAI_TYPE_GANG_SHANG_PAO = 25, 	--杠上炮
	HUPAI_TYPE_GANG_QIANG_GANG = 26, 	--抢杠
	HUPAI_TYPE_ZIMO = 27,    			--自摸
    HUPAI_TYPE_DIAN_GANG_HUA = 28,      --点杠花
    HUPAI_TYPE_HAIDILAO = 29,           --海底捞
    HUPAI_TYPE_HAIDIPAO = 30,           --海底炮

    HUPAI_TYPE_TUISUI = 31,             --退税
}

--桌子类型
EMJTableType = {
    TABLE_TYPE_ZIJIAN_ZUANSHI = 1,	--自建钻石
	TABLE_TYPE_ZIJIAN_FANGKA = 2,	--自建房卡
    TABLE_TYPE_JIN_BI_CHANG = 3,    --金币场
    TABLE_TYPE_LIAN_XI_CHANG = 4,   --练习场
}

--座位状态
EMJSeatState = {
	--所有游戏的通用桌位状态,来子pubenum
	SEAT_STATE_UNKNOW = 0,
	SEAT_STATE_NO_PLAYER = 1,  --没有玩家
	SEAT_STATE_WAIT_READY = 2, --等待准备
	SEAT_STATE_WAIT_START = 3, --等待开局
	SEAT_STATE_PLAYING  = 4,   --正在游戏中
    SEAT_STATE_HAS_HUPAI = 5,  --已经胡牌
    SEAT_STATE_HAS_LEAVE = 6,  --已经离开（也已经胡牌）
}

--自摸加倍模式
EMJZiMoAddMultiMode = {
    NO_ADD_MULTI = 1,       --不加倍
    ADD_BASE = 2,           --加底
    ADD_MULTI = 3,          --加倍
}


--桌子删除原因
EMJTableDeleteReason = {
    DELETE_REASON_UNKONW = 0,                         --未知原因
    DELETE_REASON_ATTAIN_TO_MAX_NUM = 1,              --达到最大局数（房卡场）
    DELETE_REASON_FIRST_START_BEFORE_DISBAND = 2,     --第一局开始前被解散（房卡场）
    DELETE_REASON_ONE_START_BEFORE_DISBAND = 3,       --打过一局后的一局开始前被解散（房卡场）
    DELETE_REASON_IN_GAME_DISBAND = 4,                --游戏中被解散（房卡场）
    DELETE_REASON_TABLE_NO_PLAYER = 5,                --桌子没有人被自动删除
    DELETE_REASON_SYSTEM_REQUIRE = 6,                 --系统强制要求删除
    DELETE_REASON_SYSTEM_ERROR = 7,                   --系统错误被删除
}